/**
 * Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准，目前已经正在使用的有超过
 * 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。
 * 
 * Protocol Buffers 是一种轻便高效的结构化数据存储格式，可以用于结构化数据串行化，或者说序列化。它很适合做数据存储或 RPC
 * 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的
 * API。
 * 
 * 要想使用protobuf必须得先定义proto文件。所以得先熟悉protobuf的消息定义的相关语法。下面就来介绍
 * 
 * 首先我们先定义一个proto文件，结构如下： 
 * message Article { 
 * required int32 article_id=1;
 * optional string article_excerpt=2; 
 * repeated string article_picture=3; } 

 * 
 * 上面我们主要定义了一个消息，这个消息包括文章ID，文章摘要，文章图片。下面给出消息定义的相关说明
 * 
 * message是消息定义的关键字
 * 
 * required 表示这个字段必须的，必须在序列化的时候被赋值。
 * 
 * optional 代表这个字段是可选的，可以为0个或1个但不能大于1个。
 * 
 * repeated 则代表此字段可以被重复任意多次包括0次。
 * 
 * int32和string是字段的类型。后面是我们定义的字段名。
 * 
 * 最后的1，2，3则是代表每个字段的一个唯一的编号标签，在同一个消息里不可以重复。
 * 这些编号标签用与在消息二进制格式中标识你的字段，并且消息一旦定义就不能更改
 * 。需要说明的是标签在1到15范围的采用一个字节进行编码。所以通常将标签1到15用于频繁发生的消息字段。
 * 编号标签大小的范围是1到229 –
 * 1。此外不能使用protobuf系统预留的编号标签（19000 －19999）。
 * 
 * 当然protobuf支持更多的类型，比如bool,double,float，枚举，
 * 也可以是其他定义过的消息类型譬如前面的消息Article。
 * 
 * @author donald 2018年3月9日 上午9:00:35
 */
package org.protobuf;